package DataStr.homework02.h2;
import java.util.Arrays;

//有一个整数数组a，设计一个算法将所有奇数位的元素移动到所有偶数位的元素的前面，
// 要求它们的相对次序不改变。例如a={1,2,3,4,5,6,7,8}，移动后a={2,4,6,8,1,3,5,7}。
public class ex04 {
    int[]s;//储存整数类型
    // 分奇数偶数，并存进两个不同的数组
    int evenCount = 0;  // 偶数的数量
    int oddCount = 0;   // 奇数的数量
    //分奇数偶数+分大小（从大到小）方法
    public void dis(int[]s) {
        this.s=s;
        // 先统计有多少偶数和奇数
        for (int i = 0; i < s.length; i++) {
            if (s[i] % 2 == 0) {  // 偶数，注意字符转数字
                evenCount++;
            } else {  // 奇数
                oddCount++;
            }
        }
        int[]temp=new int[evenCount];
        int[]temp2=new int[oddCount];
        // 将字符分配到temp和temp2中
        int evenIndex = 0;
        int oddIndex = 0;
        for (int i = 0; i < s.length; i++) {
            if (s[i] % 2 == 0) {
                temp[evenIndex++] = s[i];
            } else {
                temp2[oddIndex++] = s[i];
            }
        }
        //分别对两个数组进行排序
        Arrays.sort(temp);
        Arrays.sort(temp2);

        // 合并偶数和奇数数组
        int index = 0;
        for (int i = 0; i < temp.length; i++) {
            s[index++] = temp[i];
        }
        for (int i = 0; i < temp2.length; i++) {
            s[index++] = temp2[i];
        }
    }
    public void print() {
            System.out.println("元素移动后：");
        for(int i = 0; i < s.length; i++){
            System.out.print(s[i]+" ");
        }
        }
    public static void main(String[]args){
        int[] a={1,2,3,4,5,6,7,8};
        ex04 e=new ex04();
        e.dis(a);
        e.print();
    }
}
